qt之操作鼠标 可控制鼠标连击 双击 定点点击 鼠标点击脚本等

您所在的位置:网站首页 脚本 鼠标移动 qt之操作鼠标 可控制鼠标连击 双击 定点点击 鼠标点击脚本等

qt之操作鼠标 可控制鼠标连击 双击 定点点击 鼠标点击脚本等

2024-02-29 01:23| 来源: 网络整理| 查看: 265

一、前言

一直想做一个鼠标连点器,但在网上照片各种鼠标点击软件,均不符合要求,要么收费,要么不好用,要么不好使,于是乎就想起自己会写程序,为何自己能动手非要吵吵呢,于是乎就着手去新建qt工程开始干,在qt文档里找了mouse类的api函数,什么mousepos啊,mousemove啊,mouseclick啊,应有尽有,但后来在做的时候发现这些api都需要传入一个参数就是要控制的地方的句柄,但这不是我想要的,我想要控制的是在 桌面或者外部程序的地方,如果单存的控制本程序的按键或者某个地方,还用得着这么麻烦吗,后来就发现如果获取到桌面的句柄,也可以调用鼠标控制外部桌面上的应用程序等,于是乎在网上找获取桌面句柄的方式,但是事实并不尽如人意,没有找到,搁置了几天,这两天出差晚上无聊,就搜索一帆qt鼠标操作器,结果发现了新大陆,不一定非要用那一种api控制鼠标操作,同样有其他方式可以操作,只是我不懂,也无从而知这个方式到底是从哪里能寻得到在需要的时候,很多地方都是如此,但就是网上有大牛能找得到并随意的使用,这里话不多说,直接上参考链接和继续往下分享我的经验。

参考链接:Qt如何模拟鼠标点击? --> fearlazy

二、环境

 我的qt环境是 QT5.7 MinGW

 三、正文

    mouse_event没有返回值,有5个参数。第一个参数就是操作鼠标的标志(如鼠标左键按下,右键按下等),可选值

   image.png

    第二和第三个参数很明显就是坐标值,如果第一个参数设置了MOUSEEVENTF_ABSOLUTE则表示绝对坐标,否则是相对坐标。你四个参数表示鼠标滚轮滚动的值,如果第一个参数为MOUSEEVENTF_WHEEL才有用。最后一个参数表示鼠标事件的附加信息,不知道有啥用。

    关于相对坐标和绝对坐标的差异:如果是相对坐标(即没有设置MOUSEEVENTF_ABSOLUTE)那第二和第三个参数的单位就是像素。如果是绝对坐标(即设置了MOUSEEVENTF_ABSOLUTE)需要进行换算。dx和dy的取值范围都是0 ~ 65535(单位不是像素)。我们需要将目标坐标转换为到dx和dy取值范围中的某一个值。假设屏幕分辨率为1366x768,目标像素坐标为100,200 那么dx和dy分别为100*65535/1366、 200*65535/768。

     (关于参数dx和dy有一点很奇怪,经过测试dx和dy的值对鼠标按下和鼠标松开并没有作用,也就是说设置了dx和dy后鼠标都是在当前位置按下或松开)。

    

    模拟鼠标点击

    模拟鼠标点击需要先让鼠标移动到指定位置,可以使用MOUSEEVENTF_MOVE。然后点击,使用MOUSEEVENTF_LEFTDOWN和MOUSEEVENTF_LEFTUP。关键代码如下:

    

qDebug()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3